﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace l1cs.server.serverpackets
{
    public class S_SystemMessage : ServerBasePacket
    {
        private static Logger _log = Logger.getLogger( typeof( S_SystemMessage ).FullName );

        private byte[] _byte = null;
        private String _msg;

        /**
         * クライアントにデータの存在しないオリジナルのメッセージを表示する。
         * メッセージにnameid($xxx)が含まれている場合はオーバーロードされたもう一方を使用する。
         * 
         * @param msg -
         *            表示する文字列
         */
        public S_SystemMessage( String msg )
        {
            _msg = msg;
            writeC( Opcodes.S_OPCODE_SYSMSG );
            writeC( 0x09 );
            writeS( msg );
        }

        /**
         * クライアントにデータの存在しないオリジナルのメッセージを表示する。
         * 
         * @param msg -
         *            表示する文字列
         * @param nameid -
         *            文字列にnameid($xxx)が含まれている場合trueにする。
         */
        public S_SystemMessage( String msg, bool nameid )
        {
            _msg = msg;
            writeC( Opcodes.S_OPCODE_NPCSHOUT );
            writeC( 2 );
            writeD( 0 );
            writeS( msg );
            // NPCチャットパケットであればnameidが解釈されるためこれを利用する
        }

        override
        public byte[] getContent()
        {
            if ( _byte == null )
            {
                _byte = getBytes();
            }
            return _byte;
        }

        public String toString()
        {
            return String.Format( "{0}: {1}", "[S] S_SystemMessage", _msg );
        }

        override
        public String getType()
        {
            return "[S] S_SystemMessage";
        }
    }
}
